package ch.penas.business.service;

import java.io.Serializable;
import java.sql.SQLException;

import javax.persistence.Query;
import ch.penas.business.dom.FormateurCompetence;

/** @author Daniel */
public class FormateurCompetenceServiceImpl
extends FormateurCompetenceAbstractMYSQL
implements FormateurCompetenceService, Serializable {

    /** Serialisation de la class pour une question de securiter. */
    private static final long serialVersionUID = -6797092500849314538L;

    /** Constructeur par default de la class FormateurCompetenceServiceImpl. */
    public FormateurCompetenceServiceImpl() { }

    /** Permet de lier un formateur a une ou plusieurs competence.
     *
     * @param aCompetence est egale a une competence
     */
    public final void add(final FormateurCompetence aCompetence) {
        try {
            initFixture();

            getEntityTransaction().begin();
            getEntityManager().persist(aCompetence);
            getEntityTransaction().commit();

            closeEntityManager();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /** Permet de supprimer des competence lier a un ou des utilisateurs
     * de la bas de donnée.
     *
     * @param mFormateurCompetenceDel est egale a une competence lier
     * a une utilisateur a supprimer de la base de donnée SQL
     */
    public final void del(final FormateurCompetence mFormateurCompetenceDel) {
        try {
            initFixture();
        } catch (Exception e) {
            e.printStackTrace();
        }
        /** Selectioner la valeur a supprimer. */
        getEntityTransaction().begin();
        Query query = getEntityManager().createQuery("SELECT cf.idFormateurCompetence FROM FormateurCompetence cf, Formateur u, Competence c WHERE cf.idFormateur = u.idUtilisateur AND cf.idCompetence = c.idCompetence AND u.idUtilisateur = '" + mFormateurCompetenceDel.getIdFormateur() + "'" + "AND c.idCompetence ='" + mFormateurCompetenceDel.getIdCompetence() + "'");
        Object resultQuery = query.getSingleResult();
        getEntityTransaction().commit();

        /** Supprimer la valeur selectioner. */
        getEntityTransaction().begin();
        FormateurCompetence userx = getEntityManager().find(
        FormateurCompetence.class, resultQuery);
        getEntityManager().remove(userx);
        getEntityTransaction().commit();

        try {
            closeEntityManager();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}